// pages/we/adddiary/adddiary.js
import util from "../../../utils/util.js"
Page({

  /**
   * 页面的初始数据
   */
  data: {
    item: null, // 传进来的日记
    removeurls:[],
    fileids: [],   // 上传到云后的全部url
    sources: [],  // 用于预览的资源
    canChoose: true, // 是否还能选择
    diary: '',  //日记内容
    type: '',  // 资源类型
    urls: '', // 已选择的图或者视频的缩略图
    url: '' // 视频的url
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.data.item = JSON.parse(decodeURIComponent(options.diary))
    var tempurl
    if (this.data.item.type == 'video'){
      this.data.canChoose = false
      tempurl = this.data.item.urls[1]  // 取出缩略图
      this.data.item.urls.splice(1, 1)  // 删除日记中的缩略图
    }  //如果是视频 则不能选择
    else if (this.data.item.type == 'image' && this.data.item.urls.length == 9) this.data.canChoose = false  // 如果有9张图片则不能选择
    this.setData({
      diary: this.data.item.diary,   // 日记内容
      type: this.data.item.type,   // 资源类型
      canChoose: this.data.canChoose,
      urls: this.data.item.type == 'video' ? [tempurl] : JSON.parse(decodeURIComponent(options.diary)).urls, // 如果是视频则只需要缩略图，图片则全部图
      url: this.data.item.type == 'video' ? this.data.item.urls[0] : '' //如果是视频则把资源连接存在url
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  getInput(e) {
    this.setData({
      diary: e.detail.value
    })
  },
  chooseImg() { // 选取图片
    wx.chooseMedia({
      count: 9 - this.data.urls.length,
      mediaType: ['image'],
      sourceType: ['album'],
      sizeType: ['compressed'],
      success: res => {
        res.tempFiles.forEach(item => { this.data.urls.push(item.tempFilePath) }) // 选择的图片url 存到urls里面
        this.setData({
          urls: this.data.urls,
          type: res.type,
          canChoose: this.data.urls.length == 9 ? false : true
        })
      },
      fail: res => {
        console.log("选择失败", res)
      }
    })
  },
  chooseVideo() {   // 选取视频
    if (this.data.type == 'image') {
      wx.showToast({
        icon: 'none',
        title: '如需添加视频请先删除之前的图片哦',
        duration: 3000
      })
      return
    }
    wx.chooseMedia({
      count: 1,
      mediaType: ['video'],
      sourceType: ['album'],
      success: res => {
        this.data.urls.push(res.tempFiles[0].thumbTempFilePath)
        this.setData({
          url: res.tempFiles[0].tempFilePath, // 资源url
          urls: this.data.urls,  // 缩略图url
          type: res.type,
          canChoose: false
        })
      },
      fail: res => {
        console.log("选择失败", res)
      }
    })
  },
  preview(e) {
    let index = e.currentTarget.dataset.index
    this.data.sources = []
    if (this.data.type == 'image') {
      this.data.urls.forEach(item => {
        this.data.sources.push({
          url: item,
          type: this.data.type
        })
      })
    } else if (this.data.type == 'video') {
      this.data.sources.push({
        url: this.data.url,
        type: this.data.type
      })
    }
    wx.previewMedia({
      sources: this.data.sources,
      type: this.data.sources[index].type,
      url: this.data.sources[index].url,
      current: index,
      success: res => {
      },
      fail: res => {
      }
    })
  },
  Del(e) {
    this.data.urls.splice(e.currentTarget.dataset.index, 1);
    if(e.currentTarget.dataset.index < this.data.item.urls.length){
      this.data.removeurls.push(this.data.item.urls[e.currentTarget.dataset.index]) // 把不要的图片或者视频存入要删除的数组中
      this.data.item.urls.splice(e.currentTarget.dataset.index, 1)
    }
    this.setData({
      urls: this.data.urls,
      url: '',
      canChoose: true,
      type: this.data.urls.length == 0 ? '' : this.data.type //没有视频或者图片就没有type了 否则就保持原样
    })
  },
  openDialog() { // 显示选择框
    this.setData({
      showDialog: true,
    });
  },
  close() {  // 关闭选择框
    this.setData({
      showDialog: false,
    });
  },
  updateDiary() {
    if (this.data.diary == '') {
      wx.showToast({
        icon: 'error',
        title: '日记内容为空',
      })
      return
    }
    wx.showLoading({
      title: '上传中',
    })
    this.upload(this.data.type, this.data.urls, this.data.url, this.data.item.urls.length)   // 上传到服务器
  },
  upload(type, urls, url, index) { // type = image  或者 video
    if (index == urls.length) { // 更新数据的代码
      this.data.item.type = this.data.type
      this.data.item.diary = this.data.diary
      if(type == 'video'){
        this.data.fileids.push(this.data.urls[0]) // 如果是视频还需要添加缩略图
      }
      wx.cloud.deleteFile({      //删除掉不要的图片或者视频
        fileList: this.data.removeurls,
        success: ()=>{},
        fail: ()=>{}
      })
      this.data.item.urls = this.data.item.urls.concat(this.data.fileids)
      wx.cloud.callFunction({
        name: "Diary",
        data:{
          type: 'update',
          diary: this.data.item
        }
      })
      .then(res => {
        wx.hideLoading()
        wx.reLaunch({
          url: '/pages/we/diary/diary',
        })
      })
      return
    } else {
      let path
      if(this.data.type == 'image'){
        path = urls[index]
      }else if(this.data.type == 'video'){
        path = this.data.url
      }
      path = Date.parse(new Date()) + path.substr(path.length - 10, 10)  //云上的文件名
      wx.cloud.uploadFile({
        cloudPath: type + '/' + path,
        filePath: type == 'video'? url : urls[index],
        success: res => {
          this.data.fileids.push(res.fileID)
          this.upload(type, urls, url, ++index)
        }
      })
    }
  },
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})